home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 3 / Cream of the Crop 3.iso / comm / jmtl028c.zip / TRAP.H < prev    next >
C/C++ Source or Header  |  1992-09-11  |  7KB  |  183 lines

  1. /***************************************************************************/
  2. /*                        Traplist.library::Master Header File                            */
  3. /*-------------------------------------------------------------------------*/
  4. /*          ⌐ Copyright 1990-92 by Martin J. Laubach and Maximilian Hantsch        */
  5. /*                                                                                                    */
  6. /*                                    All rights reserved                                        */
  7. /*                                                                                                    */
  8. /*                    Inspired by structures by Juergen Hermann                            */
  9. /*                                                                                                    */
  10. /***************************************************************************/
  11. /*
  12.  * $Header: Sybil:nl/RCS/nl.h,v 1.27 92/08/28 11:59:16 mjl Exp $
  13.  */
  14. /*-------------------------------------------------------------------------*/
  15. #ifndef NL_NL_H
  16. #define NL_NL_H 1
  17.  
  18. #define TRAPLIST_NAME    "traplist.library"
  19. #define TRAPLIST_VER        5
  20.  
  21. /*-------------------------------------------------------------------------*/
  22. #define NL_VERBATIM 0x8000          /* Don't translate phone numbers in search */
  23.                /* A FindNL() with that flag will give you the phone number */
  24.                /* as it is listed in the nodelist                                     */
  25.  
  26. #define NL_PARSE_INVALID_CHAR        -1                 /* Returned by NLParseAddr */
  27. #define NL_PARSE_INVALID_NUMBER    -2
  28.  
  29. /*-------------------------------------------------------------------------*/
  30. /* defined/reserved Tag IDs */
  31.  
  32. #define ID_PASS    0x50415353        /* password entry   */
  33. #define ID_TCNF    0x55434E46        /* TD config entry  */
  34. #define ID_ACCT    0x41434354        /* accounting entry */
  35.  
  36. /*-------------------------------------------------------------------------*/
  37. /* Use these macros in NLEnumNode() */
  38.  
  39. #define IS_ZONE(ad,re)     (ad->Zone == ad->Net && ad->Net == re && !ad->Node && !ad->Point)
  40. #define IS_NET(ad,re)     (!ad->Node && !ad->Point)
  41. #define IS_NODE(ad,re)     (ad->Node && !ad->Point)
  42. #define IS_POINT(ad,re)     (ad->Point)
  43. #define IS_REGION(ad,re) (!ad->Node && !ad->Point && re == ad->Net)
  44. #define IS_HUB(ad,hub)   (!ad->Point && ad->Node == hub)
  45. /// Added IS_HUB macro
  46. /// Removed some of the reserved fields
  47.  
  48. /*-------------------------------------------------------------------------*/
  49. typedef struct
  50.     {
  51.     UWORD Zone;
  52.     UWORD Net;
  53.     UWORD Node;
  54.     UWORD Point;
  55.     } Addr;
  56.  
  57. /*-------------------------------------------------------------------------*/
  58. /* This structure is returned by NLFind() and NLIndexFind() */
  59.  
  60. typedef struct
  61.     {
  62.     Addr Node;                          /* node address */
  63.     ULONG Reserved0;
  64.  
  65.     UWORD Region;                      /* region (0 if none) */
  66.     UWORD Hub;                          /* node # of this node's HUB (0 if none) */
  67.     char *System;                      /* node name */
  68.     char *Sysop;                      /* sysop name */
  69.     char *Phone;                      /* phone number */
  70.     char *City;                       /* city and state */
  71.     char *Passwd;                      /* password */
  72.     char *Flags;                      /* nodelist flags */
  73.     LONG Cost;                          /* cost */
  74.     UWORD BaudRate;                  /* baud rate */
  75.     LONG ID;                           /* unique ID (offset into nodeindex) */
  76.  
  77.     ULONG Reserved1;             /* New for version 5 */
  78.     ULONG Reserved2;             /* For compatibility with nodelist.library */
  79.     ULONG Reserved3;
  80.  
  81.     UBYTE Type;                  /* Entry type */
  82.     UBYTE Pad0;
  83.     } NodeDesc;
  84.  
  85. /*-------------------------------------------------------------------------*/
  86. #define NL_ENTRY_NODE    0
  87. #define NL_ENTRY_HOST    1
  88. #define NL_ENTRY_HOLD    2
  89. #define NL_ENTRY_HUB        3
  90. #define NL_ENTRY_PVT        4
  91. #define NL_ENTRY_POINT    5
  92. #define NL_ENTRY_ZONE    6
  93. #define NL_ENTRY_REGION    7
  94. #define NL_ENTRY_DOWN    8
  95. #define NL_ENTRY_MAX        9
  96.  
  97. /*-------------------------------------------------------------------------*/
  98. #ifndef NL_PRIVATE
  99.  
  100. typedef void *Extra;
  101. typedef void *NodeList;
  102.  
  103. #ifdef __STDC__
  104.  
  105. void LibArexx(void);
  106.  
  107. NodeList NLOpen(char *, ULONG);
  108. void NLClose(NodeList);
  109. NodeDesc *NLFind(NodeList, Addr *, ULONG);
  110. int NLAddrComp(Addr *, Addr *);
  111. void NLFreeNode(NodeDesc *);
  112. NodeDesc *NLIndexFind(NodeList, Addr *, ULONG);
  113.  
  114. Extra ExtraOpen(char *);
  115. void *ExtraFromNL(NodeList);
  116. void ExtraClose(Extra);
  117. void *ExtraFind(Extra, Addr *addr, ULONG, ULONG *);
  118. void *ExtraFindLock(Extra, Addr *addr, ULONG, ULONG *);
  119. BOOL ExtraPut(Extra, Addr *, ULONG, int, void *);
  120. BOOL ExtraChange(Extra, Addr *, ULONG, ULONG, void *);
  121. BOOL ExtraDel(Extra, void *);
  122. BOOL ExtraFlush(Extra);
  123. void ExtraLock(Extra);
  124. void ExtraUnlock(Extra);
  125. LONG ExtraEnumNode(Extra, BOOL (*)(Addr *, void *), void *);
  126. LONG ExtraEnumTag(Extra, Addr *, BOOL (*)(void *, ULONG, ULONG, void *), void *);
  127.  
  128. LONG NLEnumNode(NodeList, LONG, Addr *, BOOL (*)(Addr *, ULONG, void *), void *);
  129.  
  130. LONG NLParseAddr(Addr *, char *, Addr *);
  131.  
  132. BOOL NLSubmitNewIndex(NodeList, char *, char *);
  133.  
  134. void ExtraLockTag(Extra, void *);
  135. void ExtraUnlockTag(Extra, void *);
  136.  
  137. void ExtraTagDate(Extra, void *, struct DateStamp *);
  138.  
  139. char **NLGetNodelistNames(NodeList);
  140. void NLFreeNodelistNames(NodeList, char **);
  141.  
  142. #endif /* STDC */
  143.  
  144. #ifdef LATTICE
  145. /*pragma libcall NodelistBase LibArexx 1E 9802*/
  146. #pragma libcall NodelistBase NLOpen 24 0802
  147. #pragma libcall NodelistBase NLClose 2A 801
  148. #pragma libcall NodelistBase NLFind 30 09803
  149. #pragma libcall NodelistBase NLFreeNode 36 801
  150. #pragma libcall NodelistBase NLAddrComp 3C 9802
  151. #pragma libcall NodelistBase NLIndexFind 42 09803
  152. #pragma libcall NodelistBase ExtraFromNL 48 801
  153. #pragma libcall NodelistBase ExtraOpen 4E 801
  154. #pragma libcall NodelistBase ExtraClose 54 801
  155. #pragma libcall NodelistBase ExtraFind 5A A09804
  156. #pragma libcall NodelistBase ExtraPut 60 A109805
  157. #pragma libcall NodelistBase ExtraDel 66 9802
  158. /*pragma libcall NodelistBase ObsoleteOldIndexFind 6C 09803*/
  159. #pragma libcall NodelistBase ExtraFlush 72 801
  160. #pragma libcall NodelistBase ExtraLock 78 801
  161. #pragma libcall NodelistBase ExtraUnlock 7E 801
  162. #pragma libcall NodelistBase ExtraEnumNode 84 A9803
  163. #pragma libcall NodelistBase ExtraChanged 8A 801
  164. #pragma libcall NodelistBase ExtraEnumTag 90 BA9804
  165. #pragma libcall NodelistBase NLEnumNode 96 BA90805
  166. #pragma libcall NodelistBase NLParseAddr 9C A9803
  167. #pragma libcall NodelistBase NLSubmitNewIndex A2 A9803
  168. #pragma libcall NodelistBase ExtraLockTag A8 9802
  169. #pragma libcall NodelistBase ExtraUnlockTag AE 9802
  170. #pragma libcall NodelistBase ExtraChange B4 A109805
  171. #pragma libcall NodelistBase ExtraFindLock BA A09804
  172. /*pragma libcall NodelistBase NLNodelistLibrary0 C0 0*/
  173. /*pragma libcall NodelistBase NLNodelistLibrary1 C6 0*/
  174. #pragma libcall NodelistBase ExtraTagDate CC A9803
  175. #pragma libcall NodelistBase NLGetNodelistNames D2 801
  176. #pragma libcall NodelistBase NLFreeNodelistNames D8 9802
  177. #endif /* SASC */
  178. #endif /* PRIVATE */
  179. #endif /* NL.H */
  180.  
  181. /*-------------------------------------------------------------------------*/
  182. /* ID: 1.1@6547  Last Changed: 11 Sep 1992 11:04:16 by max */
  183.